java中Stack的peek方法

您所在的位置:网站首页 stack top函数 java中Stack的peek方法

java中Stack的peek方法

2024-06-30 15:24:22| 来源: 网络整理| 查看: 265

一、用法:

java里Stack的peek方法是返回栈顶的元素但不移除它。

但Stack的pop方法是会移除的。

二、原因剖析:

     (1)这是JDK中的peek方法的源码

   /**      * Looks at the object at the top of this stack without removing it      * from the stack.      *      * @return  the object at the top of this stack (the last item      *          of the Vector object).      * @throws  EmptyStackException  if this stack is empty.      */     public synchronized E peek() {         int     len = size();         if (len == 0)             throw new EmptyStackException();         return elementAt(len - 1);     }   这是上述最后一行代码elementAt(len-1)方法的源码:

  public synchronized E elementAt(int index) {         if (index >= elementCount) {             throw new ArrayIndexOutOfBoundsException(index + " >= " + elementCount);         }         return elementData(index);     }这是上述elementData(index)方法的源码:

    E elementData(int index) {         return (E) elementData[index];     }        当看到elementData[index]时就会发现java里的栈的实现是用数组来实现的。再返回去看peek()方法的源码会发现只是把 数组的最后一个元素(就是栈顶)返回来了,而没有做删除。

(2)这是JDK中的pop方法的源码

  /**      * Removes the object at the top of this stack and returns that      * object as the value of this function.      *      * @return  The object at the top of this stack (the last item      *          of the Vector object).      * @throws  EmptyStackException  if this stack is empty.      */     public synchronized E pop() {         E       obj;         int     len = size();         obj = peek();         removeElementAt(len - 1);         return obj;     }

这是removeElementAt(len-1)方法的源码

public synchronized void removeElementAt(int index) {         modCount++;         if (index >= elementCount) {             throw new ArrayIndexOutOfBoundsException(index + " >= " +                                                      elementCount);         }         else if (index < 0) {             throw new ArrayIndexOutOfBoundsException(index);         }         int j = elementCount - index - 1;         if (j > 0) {             System.arraycopy(elementData, index + 1, elementData, index, j);         }         elementCount--; //注意这里是减减操作(- -),连在一起了,看不清         elementData[elementCount] = null; /* to let gc do its work */     }上述的 removeElementAt(len-1)方法的源码中,倒数第二行的代码的地方是将数组中存放的个数减少一个,然后将最后一个元素

设置位null值。也就验证了pop是会移除最后一个元素(也就是栈顶元素)的。 三、总结

        其实学习java过程中会有很多的困难,只要我们不怕艰难,勇敢的去阅读源码和注释,会发现也没有那么难。

坚持自己的梦想走下去,总会成功的!与学java的小白们共勉!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭